/*
 * @Author: 詹真琦(legendryztachi@gmail.com)
 * @Date: 2022-06-01 11:23:34
 * @LastEditors: 詹真琦(legendryztachi@gmail.com)
 * @LastEditTime: 2022-07-05 15:31:45
 * @FilePath: \code\ctp-static-portal-front\src\views\loginPrePortal\transform-data\index.js
 * @Description: 将后端数据转换成我们需要的格式
 */
/**
 * @description:
 * @param {Array} spaceData 传入后端数据
 * @return {Array}传出转换数据
 */

export default function transformData(spaceData) {
  let newSpaceData = [];
  spaceData.forEach((rowData, rowIndex) => {
    // 第一层是行级数据
    newSpaceData[rowIndex] = [];
    // 第二层是列级数据
    rowData &&
      rowData.forEach((columnData, columnIndex) => {
        // 列级数据中是行级数据
        newSpaceData[rowIndex][columnIndex] = [];
        let newColumnData = [];
        // 如果列级数据的下一级还是数组，则说明是复杂布局（模板5 6 7 8），需要手动处理，将同一行数据放入数组中
        if (columnData[0] instanceof Array) {
          // 第三层是列中的数据排列，先排满一行就结束
          let newRowDataTop = [];
          let newRowDataBottom = [];

          // 如果是需要再分行的数据
          // columnData的长度为3则需要再上下分行
          if (columnData.length == 3) {
            columnData.forEach((block) => {
              setTabIndex(block);
              if (block.length > 0 && (block[0].span == 9 || block[0].span == 8)) {
                newRowDataTop.push(block);
              } else {
                newRowDataBottom.push(block);
              }
            });
            newColumnData.push(newRowDataTop);
            newColumnData.push(newRowDataBottom);
          } else {
            columnData.forEach((block) => {
              setTabIndex(block);
              newColumnData.push([block]);
            });
          }
        } else {
          setTabIndex(columnData);
          newColumnData = columnData;
        }

        newSpaceData[rowIndex][columnIndex] = newColumnData;
      });
  });

  // 增加tabIndex，供切换tab使用
  function setTabIndex(data) {
    data.forEach((subRowData) => {
      subRowData.tabIndex = 0;
      if (subRowData.sectionData) {
        subRowData.sectionData.data = null;
      }
      subRowData.customStyle = {
        backgroundColor: '',
        isSectionBg: false,
      };
      const children = subRowData.children;
      //如果是组合栏目
      if (subRowData.type === 'multiSection') {
        children.forEach((childrenData) => {
          //如果是组合栏目下的组合栏目
          if (childrenData.type === 'sectionGroup') {
            childrenData.customStyle = {
              backgroundColor: '',
              isSectionBg: false,
            };
            childrenData.tabIndex = 0;
            childrenData.children.forEach((d) => {
              d.sectionData.data = null;
            });
          } else {
            childrenData.sectionData.data = null;
          }
        });
      } else {
        children &&
          children.forEach((d) => {
            d.sectionData.data = null;
          });
      }
    });
  }
  return newSpaceData;
}
